﻿using System;
using System.IO;

namespace 面向对象_文件操作._1FileInFO
{
    class Program
    {
        static void Main(string[] args)
        {
            var test = new FileInfoTest();
            test.DoTest();
        }
    }
    // FileInfo : file 文件 ；info = in for ma tion，信息
    class FileInfoTest
    {
        public void DoTest()// do 做 test 测试
        {
            string path = @"F:/111/444.txt";
            FileInfo fileinfo = new FileInfo(path);
            //Create创建
            //如果存在当前文件会发生覆盖如果不存在当前文件则创建
            fileinfo.Create();
            //判断文件是否存在
            Console.WriteLine($"文件{(fileinfo.Exists ? "" : "不")}存在");//true
            //查询文件大小
            //在代码中，描述尺寸有这些单词： Count（list） 、Lenght（数组）、capacity （list）、size 尺寸（sizeof 运算符）
            Console.WriteLine(fileinfo.Length);//查询文件不存在会导致报错
            //查询文件名称
            Console.WriteLine(fileinfo.Name);
            //复制文件
            // copy 拷贝，复制 ，to 朝向 ，去向哪儿
            // copyto : 拷贝到
            // already exists: already 已经，exist 存在  
            // 如果文件已经存在则会抛出异常，需要 捕获它
            string path1 = @"F:/111/222.txt";
            //var f= fileinfo.CopyTo(path1);
            //删除一个文件
            //Delete删除
            //  fileinfo.Delete();
            //查询是否为只读
            //has :是否有
            // is  :是否   is 运算符 
            Console.WriteLine(fileinfo.IsReadOnly);
            //9. 移动文件
            path = "D:/Study/111.png";
            var moveto = "D:/Study/Folder1/101.png";
            fileinfo = new FileInfo(path);
            // move 移动， to 到哪儿
            Console.WriteLine($"before: 文件{(fileinfo.Exists ? "" : "不")}存在 {fileinfo.Name} - {fileinfo.FullName}");
            // 如果文件存在，则会抛出文件已存在的异常， 可以 try catch 也可以覆盖
            //file.MoveTo(moveto);// 文件存在会抛异常
            // override : 重写 （方法重写的关键字）
            // overwrite: 覆盖，over 覆盖在xxx之上 wirte 写字（moveto 的一个参数）
            fileinfo.MoveTo(moveto, true);// 文件存在会抛异常
            Console.WriteLine($"after: 文件{(fileinfo.Exists ? "" : "不")}存在 {fileinfo.Name} - {fileinfo.FullName}");
            fileinfo.CopyTo(path);


        }
    }
}
